查看原文
其他

一文读懂TensorFlow 2.0高阶API

赵英俊 博文视点Broadview 2020-10-17


在TensorFlow 2.0中对大量的高阶API库进行了删减与合并,根据官方的解释,这一切的变化都是为了使TensorFlow2.0更加易用和简洁。本文以官方推荐的唯一高阶API库tf.keras为主,概括地介绍TensorFlow 2.0的高阶API。
在TensorFlow 2.0版本中完全移除了tf.contrib这个高阶API库,官方推荐的高阶API只有tf.keras。
Keras是一个意在降低机器学习编程入门门槛的项目,其在业界拥有众多的拥护者和使用者。经过Keras社区的多年发展,Keras集成了很多符合工业和研究需求的高阶API,使用这些API只需要几行代码就可以构建和运行一个非常复杂的神经网络。TensorFlow官方社区首次宣布发布TensorFlow 2.0版本计划时就明确了Keras会深度融合到TensorFlow中,并且作为官方支持的高阶API。下面我们看看官方文档中提到的tf.keras下的接口模块。 
activations:tf.keras.actibations中包含了当前主流的激活函数,可以直接通过该API进行激活函数的调用。
♣ applications:tf.keras.applications中包含的是已经进行预训练的神经网络模型,可以直接进行预测或者迁移学习。目前该模块中包含了主流的神经网络结构。
♣ backend:tf.keras.backend中包含了Keras后台的一些基础API接口,用于实现高阶API或者自己构建神经网络。
♣ datasets:tf.keras.datasets中包含了常用的公开数据训练集,可以直接进行使用(需要翻墙),数据集有CIFAR-100、Boston Housing等。
♣ layers:tf.keras.layers中包含了已经定义好的常用的神经网络层。
♣ losses:tf.keras.losses中包含了常用的损失函数,可以根据实际需求直接进行调用。
 optimizers:tf.keras.optimizers中包含了主流的优化器,可以直接调用API使用。比如Adm等优化器可以直接调用,然后配置所需要的参数即可。
 preprocessing:tf.keras.preprocessing中包含了数据处理的一些方法,分为图片数据处理、语言序列处理、文本数据处理等,比如NLP常用的pad_sequences等,在神经网络模型训练前的数据处理上提供了非常强大的功能。
 regularizers:tf.keras.regularizers中提供了常用的正则化方法,包括L1、L2等正则化方法。
 wrappers:tf.keras.wrappers是一个Keras模型的包装器,当需要进行跨框架迁移时,可以使用该API接口提供与其他框架的兼容性。

 Sequential类:tf.keras.Sequential可以让我们将神经网络层进行线性组合形成神经网络结构。


为节省篇幅,本文不再结合实践案例详细讲解主要高阶API的使用,而是以构建一个线性回归模型为例介绍TensorFlow 2.0高阶API的使用。

1. 使用tf.keras高阶API构建神经网络模型

在TensorFlow 2.0中可以使用高阶API tf.keras.Sequential进行神经网络模型的构建。示例代码如下: 
1#导入所需要的依赖包 
2import tensorflow as tf 
3import numpy as np 
4
5#实例化一个tf.keras.Sequential 
6model=tf.keras.Sequential() 
7#使用Sequential的add方法添加一层全连接神经网络
8model.add(tf.keras.layers.Dense(input_dim=1,units=1)) 
9
10#使用Sequential的compile方法对神经网络模型进行编译,loss函数使用MSE,optimizer使用SGD(随机梯度下降)
11model.compile(loss='mse',optimizer='sgd'


2. 使用tf.keras高阶API训练神经网络模型

在完成神经网络模型的构建和编译之后,需要准备训练数据,然后对神经网络模型进行训练。可以使用tf.keras.Sequential的fit方法进行训练,示例代码如下: 
1#随机生成一些训练数据,在-10到10的范围内生成700个等差数列作为训练输入
2X = np.linspace(-10, 10, 700) 
3#通过一个简单的算法生成Y数据,模拟训练数据的标签 
4Y=2*X+100+np.random.normal(0, 0.1, (700, )) 
5#开始训练,“verbose=1”表示以进度条的形式显示训练信息,“epochs=200”表示训练的epochs为200,“validation_split=0.2”表示分离20%的数据作为验证数据
6model.fit(X,Y,verbose=1,epochs=200,validation_split=0.2) 


3. 使用tf.keras高阶API保存神经网络模型

在完成神经网络模型的训练之后,可以使用Sequential的save方法将训练的神经网络模型保存为H5格式的模型文件。示例代码如下: 
1filename='line_model.h5' 
2model.save(filename) 
3print("保存模型为line_model.h5"


4. 使用tf.keras高阶API加载模型进行预测

加载神经网络模型需要使用tf.keras.models.load_model这个API,在完成模型的加载后可以使用Sequential的predict方法进行预测。示例代码如下: 
1x=tf.constant([0.5]) 
2model=tf.keras.models.load_model(filename) 
3y=model.predict(x) 
4print(y)

本文节选自博文视点新书《走向TensorFlow 2.0:深度学习应用编程快速入门》。本书探讨了开源机器学习软件库TensorFlow 2.0的诸多应用实践,内容涵盖各种热门的应用场景,包括图像识别、自然语言对话机器人、基于生成网络的图片风格迁移、文本情感分析等。

书是为“应用落地”而编写的,附有大量代码及注释,可帮助读者最快速度实现框架入门与应用落地。

(扫码获取本书详情)


▶  关 于 内 容
本书是TensorFlow 2.0编程实践的入门类书籍,目的是在TensorFlow 2.0正式版发布之际能够帮助大家快速了解其核心特性及基本编程技巧。本书通过5个常用的人工智能编程案例,帮助大家掌握如何在工作中使用TensorFlow 2.0进行应用开发。
本书内容覆盖了Python和TensorFlow基础入门、自然语言处理和CV领域的实践案例、模型的服务化部署,希望本书能在基于TensorFlow 2.0的人工智能编程上能够助你一臂之力。

▶  关 于 作 者
赵英俊,阿里云人工智能领域MVP,目前在阿里云从事产业、工业智能方向的解决方案架构师工作,基于数据智能、人工智能等技术和产品解决传统产业、工业的痛点和难点问题。现个人维护一个优秀的开源NLP项目——基于Seq2Seq的中文智能聊天机器人,目前GitHub stars超过1100。

▶  本 书 结 构
第1章 Python基础编程入门

1.1 Python的历史

1.2 Python的基本数据类型

1.3 Python数据处理工具之Pandas

1.4 Python图像处理工具之PIL

第2章 TensorFlow 2.0快速入门

2.1 TensorFlow 2.0简介

2.2 TensorFlow 2.0环境搭建

2.3 TensorFlow 2.0基础知识

2.4 TensorFlow 2.0高阶API(tf.keras)

第3章 基于CNN的图像识别应用编程实践

3.1 CNN相关基础理论

3.2 TensorFlow 2.0 API详解

3.3 项目工程结构设计

3.4 项目实现代码详解

第4章 基于Seq2Seq的中文聊天机器人编程实践

4.1 NLP基础理论知识

4.2 TensorFlow 2.0 API详解

4.3 项目工程结构设计

4.4 项目实现代码详解

第5章 基于CycleGAN的图像风格迁移应用编程实践

5.1 GAN基础理论

5.2 CycleGAN的算法原理

5.3 TensorFlow 2.0 API详解

5.4 项目工程结构设计

5.5 项目实现代码详解

第6章 基于Transformer的文本情感分析编程实践

6.1 Transformer相关理论知识

6.2 TensorFlow 2.0 API详解

6.3 项目工程结构设计

6.4 项目实现代码详解

第7章 基于TensorFlow Serving的模型部署实践

7.1 TensorFlow Serving框架简介

7.2 TensorFlow Serving环境搭建

7.3 API详解

7.4 项目工程结构设计

7.5 项目实现代码详解



  热文推荐  






▼ 点击阅读原文,了解本书详情。

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存